#!/bin/bash

# 生成测试用例的期望输出文件
# 确保只包含程序的实际输出，不包含 cargo 的构建信息

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 获取项目根目录（脚本在 tests/ 目录下，所以项目根目录是上一级）
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# 测试目录
TESTS_DIR="$SCRIPT_DIR"

echo "生成测试用例的期望输出..."

# 确保程序已构建
cd "$PROJECT_ROOT"
cargo build --release --quiet

# 为每个 .in 文件生成对应的 .out 文件
for input_file in "$TESTS_DIR"/*.in; do
    if [ -f "$input_file" ]; then
        test_name=$(basename "$input_file" .in)
        output_file="$TESTS_DIR/${test_name}.out"
        
        echo "生成 $test_name.out ..."
        
        # 直接运行编译好的二进制文件，避免 cargo run 的输出
        "$PROJECT_ROOT/target/release/compiler" "$input_file" 2>"$output_file"
        
        echo "✓ $output_file 已生成"
    fi
done

echo "所有输出文件生成完成！"